import { create, all } from 'mathjs';
// 配置 math.js 使用 Decimal 类型
const math = create(all, {
  number: 'BigNumber', // 使用 BigNumber 类型
});
//判断等式是否成功
export const count = (expression: string, precision: number = 4, isRoundOff: boolean = false) => {
  try {
    // 使用 Function 构造器代替 eval，以避免直接执行任意代码带来的风险
    // 注意：这仍然需要对输入进行严格的验证和清理
    const _count = math.evaluate(expression);
    return isRoundOff ? Number(_count.toFixed(precision)) : truncateToTwoDecimalsWithTrick(_count, precision);
  } catch (e) {
    ElMessage.error('无效的表达式');
    return null;
  }
};

export const truncateToTwoDecimalsWithTrick = (number: number, precision: number = 2) => {
  const fixedString = number.toString().includes('.') ? number.toString().split('.')[0] + '.' + number.toString().split('.')[1].slice(0, precision) : number.toString();
  return parseFloat(fixedString);
};
